home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / utilities / pu309.dms / pu309.adf / Satellite1 / PREPRINT (.txt) < prev    next >
AmigaBASIC Source Code  |  1990-09-29  |  9KB  |  316 lines

  1. 'PREPRINT       Dr T Clarke W3IWI
  2. 'Converted to the Amiga by T Weatherley G3WDI
  3. 'Added to by A Hewat G8NTH
  4. 'Version 1.00    First Amiga version
  5. 'Last mod 26/09/88 by ACH
  6.  
  7. DIM T$(20),S$(40),I$(40),C(3,2):P=0
  8. DEFDBL A-Z
  9.  
  10. C8$=CHR$(10)+CHR$(10)+CHR$(10)+CHR$(10)
  11. 50 C9$=CHR$(12)+CHR$(7):PRINT C9$
  12. PRINT "AMSAT ORBITAL PREDICTION PROGRAM"
  13. PRINT  "COPYRIGHT 1980  DR. TOM CLARKE W3IWI"
  14. PRINT  "TRANSLATED FOR AMSAT UK BY G3WDI"
  15. PRINT "COPYRIGHT AMSAT-UK. 1988"
  16. REM SET STARTING DATA
  17. INPUT "start year = ",Y:Y=Y/100:Y=INT(100* (Y-INT(Y)) + 0.1)
  18. IF Y/4=INT(Y/4) THEN F9=1 :ELSE F9=0
  19. INPUT "     month = ",M
  20. INPUT "       day = ",D
  21.  DEF FNT$(D)= CHR$(48+INT(D/10))+CHR$(48+D-10*INT(D/10))
  22. T$=FNT$(D)+"/"+FNT$(M)+"/"+FNT$(Y)+" at "
  23. RESTORE daysofyear:
  24. FOR I= 1 TO M:READ D9:NEXT:D8=D+D9
  25. IF M>2 THEN D8=D8+F9 :PRINT "    day = ",D8
  26. PRINT
  27. INPUT"Start : UTC hours= ",H
  28. INPUT"             Mins= ",M
  29. T7=D8+H/24+M/1440
  30. T$=T$+FNT$(H)+FNT$(M)+":00"
  31. PRINT ''
  32. INPUT"duration hours= ",H1
  33. INPUT"          mins= ",M1:T8=T7+H1/24+M1/1440
  34.  PRINT ''
  35. INPUT "TIMESTEP: Min= ",M2:T9=M2/1440
  36. PRINT '
  37. PRINT "    from ",:PRINT  USING"######.####";T7,:PRINT ," to ";:PRINT  USING"######.####";T8
  38. RESTORE Physicaldata:
  39. READ P1,C,R0,F,G0,G1
  40. P2=2*P1:P0=P1/180:F=1/F
  41. Getyear:
  42. READ Y1,G2:IF Y1=Y THEN statdata:
  43. IF Y1>0 THEN Getyear:
  44. IF Y1=0 THEN PRINT "UNABLE TO FIND YEAR:STOP
  45. statdata:
  46. RESTORE stationdata:
  47. READ L9,W9,H9,C$,E8
  48. GOSUB observerdata: PRINT''
  49. DEFDBL Q,K
  50. GOSUB pobsdata:
  51. PRINT "-------------satellite selection menu -------------------------"
  52. I=0:RESTORE keps:
  53. mnu:
  54. READ S$:IF S$="END" THEN choice: :ELSE READ I$:I=I+1
  55. PRINT "Entry # ";I;" for ";S$:PRINT "   ID= ";I$
  56. READ D,D,D,D,D,D,D,D,D,D,D,D,D,D : GOTO mnu:
  57. choice:
  58. INPUT "Select entry # ",J:RESTORE keps:
  59. IF J<1 OR J>I THEN choice:
  60. FOR I= 1 TO J:READ S$,I$,Y3,D3,H3,M3,S3
  61. READ K0,M0,N0,A0,I0,E0,W0,O0,F1:NEXT
  62. PRINT :PRINT  "Doppler calculated for frequency = ",F1," MHz "
  63. INPUT "Change frequency to (0 for default) ",D
  64. INPUT "printer Y/y / n   ",P$ :IF P$="Y" OR P$ ="y" THEN printer=1
  65. IF D<>0 THEN F1=D
  66. IF Y3=Y THEN 500 :ELSE PRINT "ELEMENTS NOT FROM CURRENT YEAR":STOP
  67. 500 IF D3=INT(D3) THEN T0=D3+H3/24+M3/1440+S3/86400 :ELSE T0=D3
  68. PRINT :PRINT "Orbital Elements for "'S$
  69. PRINT "    Reference Id.= ",I$:PRINT 
  70. PRINT "Reference Epoch = ";Y3;" + ";T0
  71. PRINT "Starting  Epoch = ";Y;" + ";T7;" = ";T$
  72. PRINT 
  73. PRINT "Parameter";SPC(9);"Reference";SPC(22);"Starting"
  74. T=T7
  75. GOSUB matrix: : GOSUB meananomoly: 
  76. PRINT "Orbit number ";SPC(10);K0;SPC(10);K
  77. PRINT "Mean Anomaly ";SPC(10);M0;SPC(10);M/P0
  78. PRINT "Inclination  ";SPC(10);I0
  79. PRINT "Eccentricity ";SPC(10);E0
  80. PRINT "Mean Motion  ";SPC(10);N0
  81. PRINT "S.M.A.,Km    ";SPC(10);A0
  82. PRINT "Arg.Perigee  ";SPC(10);W0;SPC(10);W
  83. PRINT " R. A. A. N. ";SPC(10);O0;SPC(10);O
  84. PRINT "Freq. Mhz.   ";SPC(10);F1
  85.  
  86. K9=5.47102e-315:K8=5.47102e-315:
  87.  
  88. maincomputationloop:
  89. FOR T=T7 TO T8 STEP T9:K7= INT(T):GOSUB meananomoly
  90. IF K=K9 THEN 720:GOSUB matrix::K8=5.47102e-315:K9=5.47102e-315
  91. 720 GOSUB Keplerseq: 
  92. GOSUB parameters: 
  93. IF E9<E8 THEN 830 
  94. IF K7=K8 AND K9=K THEN 770
  95. 730 IF K=K9 THEN 760 :ELSE GOSUB pager:
  96. K9=K
  97. IF printer=1 THEN 700 :ELSE 740
  98. 700 CLOSE #2:OPEN "LPT1:" FOR OUTPUT AS #2
  99. 701 PRINT #2," U.T.C.    AZ    EL   DOPPLER  RANGE    HEIGHT   LAT   LONG   PHASE"
  100. 702 PRINT #2,"HHMM:SS   deg   deg      Hz      km       km     deg    deg    (256)"
  101.  
  102. 740 'PRINT " U.T.C.    AZ    EL   DOPPLER  RANGE    HEIGHT   LAT   LONG   PHASE"
  103. 750 'PRINT "HHMM:SS   deg   deg      Hz      km         km   deg    deg   (256)"
  104. 760 PRINT SPC(10);"---DAY# ";K7;"---ORBIT # ";K;"----"
  105. 770 K8=K7:T4=T-K7:S4=INT(T4*86400 +0.5):H4=INT(S4/3600+1e-06)
  106. 780 M4=INT((S4-H4*3600)/60+1e-06):S4=INT(S4-3600*H4-60*M4)
  107. 790 T$=FNT$(H4)+FNT$(M4)+":"+FNT$(S4)
  108. 800 F9=-F1*1e+06*R8/C  : DEF FNI(D)=SGN(D)*INT(ABS(D)+0.5)
  109. 810 PRINT #2, T$;:PRINT #2,USING "######";FNI(A9);FNI(E9);:PRINT#2, USING"#######";FNI(F9);
  110. PRINT #2,USING "#########";FNI(R5);FNI(R-R0);:PRINT #2, USING"######";FNI(L5);FNI(W5);M9
  111. 830 NEXT:PRINT : INPUT"PRESS RETURN TO CONTINUE:",D$:GOTO 50
  112. pager:
  113. PRINT  C9$;C$;"  lat=";L9;"  W.Long=";W9;"  Ht. = "H9;
  114. P=P+1:PRINT SPC(10);" Pg.="P
  115. PRINT  SPC(10);"---MINIMUM ELEVATION= ";E8;"Deg.--"
  116. PRINT  :RETURN
  117.  
  118.  
  119. STOP
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126. observerdata:
  127. L8=L9*P0
  128. S9=SIN(L8)
  129. C9=COS(L8)
  130. S8=SIN(-W9*P0):C8=COS(W9*P0)
  131. R9=R0*(1-(F/2)+(F/2)*COS(2*L8))+H9/1000
  132. L8=ATN((1-F)^2*S9/C9):Z9=R9*SIN(L8)
  133. X9=R9*COS(L8)*C8:Y9=R9*COS(L8)*S8:RETURN
  134. pobsdata:
  135. PRINT C$;"   Lat.="L9;" W.Long.=";W9;"   ht.=";H9
  136. PRINT TAB(5)"---Minimum elevation -";E8;"Deg--"
  137. PRINT 
  138. RETURN
  139. matrix:
  140. IF N0>0.1 THEN A0=((G0/(N0^2))^(1/3))
  141. IF N0<=0.1 THEN N0=SQR(G0/(A0^3))
  142. E2=1-E0^2:E1=SQR(E2):Q0=M0/360+K0
  143. K2=9.95*((R0/A0)^3.5)/(E2^2)
  144. S1=SIN(I0*P0):C1=COS(I0*P0)
  145. O=O0-(T-T0)*K2*C1
  146. S0=SIN(O*P0)
  147.  C0=COS(O*P0)
  148. W=W0+(T-T0)*K2*(2.5 * (C1^2)-0.5)
  149. S2=SIN(W*P0)  
  150. C2=COS(W*P0)
  151. C(1,1)=+(C2*C0)-(S2*S0*C1) 
  152. C(1,2)=-(S2*C0)-(C2*S0*C1)
  153. C(2,1)=+(C2*S0)+(S2*C0*C1) 
  154. C(2,2)=-(S2*S0)+(C2*C0*C1)
  155. C(3,1)=+(S2*S1)           
  156. C(3,2)=+(C2*S1) : RETURN
  157. meananomoly:
  158. Q=N0*(T-T0)+Q0:K=INT(Q):M9=INT((Q-K)*256):M=(Q-K)*P2:RETURN
  159.  
  160.  
  161. keps:
  162. DATA "Cosmos 1766"
  163. DATA "LES"
  164. DATA 87,230.74062106,0,0,0
  165. DATA 999
  166. DATA 88.5386
  167. DATA 13.8338111720,0
  168. DATA 82.5567
  169. DATA 0.0011
  170. DATA 271.1364
  171. DATA 29.0651
  172. DATA 137.4
  173.  
  174. DATA "MIR"
  175. DATA "NASA"
  176. DATA 87,350.92010311,0,0,0
  177. DATA 10492
  178. DATA 141.9009
  179. DATA 15.741999605,0
  180. DATA 51.63
  181. DATA 0.0019
  182. DATA 218.0809
  183. DATA 291.7837
  184. DATA 143.625
  185.  
  186. DATA "METEOR 2/16"
  187. DATA "NASA"
  188. DATA 87,349.94089450,0,0,0
  189. DATA 1657
  190. DATA 58.1840
  191. DATA 13.83330619,0
  192. DATA 82.5557
  193. DATA 0.0011
  194. DATA 301.8209
  195. DATA 294.6429
  196. DATA 137.850
  197.  
  198. DATA "METEOR 2/15"
  199. DATA "NASA"
  200. DATA 87,349.92970702,0,0,0
  201. DATA 7849
  202. DATA 250.9101
  203. DATA 13.83767605,0
  204. DATA 82.5363
  205. DATA 0.0015
  206. DATA 109.3764
  207. DATA 15.1388
  208. DATA 137.85
  209.  
  210. DATA"NOAA-10"
  211. DATA"NASA"
  212. DATA 87,346.71759361,0,0,0
  213. DATA 6412
  214. DATA 308.0062
  215. DATA 14.22534037,0
  216. DATA 98.7008
  217. DATA 0.0015
  218. DATA 52.2462
  219. DATA 15.1388
  220. DATA 137.5
  221.  
  222. DATA "NOAA-9"
  223. DATA "NASA"
  224. DATA 87,341.20109492,0,0,0
  225. DATA 15372
  226. DATA 280.3594
  227. DATA 14.1153643,0
  228. DATA 99.0755
  229. DATA 0.0016
  230. DATA 79.9437
  231. DATA 308.5130
  232. DATA 137.62
  233.  
  234. DATA "METEOR 30"
  235. DATA "NASA"
  236. DATA 87,346.29912200,0,0,0
  237. DATA 40878
  238. DATA 72.8717
  239. DATA 14.98493528,0
  240. DATA 97.7216
  241. DATA 0.0041
  242. DATA 286.7977
  243. DATA 72.4335
  244. DATA 137.010
  245.  
  246. DATA "SALYUT 7"
  247. DATA "NASA"
  248. DATA 87,350.91797151,0,0,0
  249. DATA 32398
  250. DATA 207.1197
  251. DATA 15.31746328,0
  252. DATA 51.6122
  253. DATA 0.0001
  254. DATA 152.9965
  255. DATA 94.1426
  256. DATA 20.005
  257. DATA "END"                     
  258. 'ADD NEW DATA HERE EPOCH ORBIT MA MM INC ECC ARG RAAN FQ
  259.  
  260.  
  261.  
  262.  
  263. Physicaldata:
  264. DATA 3.1415926535,2.997925E5,6378.160,298.25:'PI/VEL LIGHT/RAD EARTH/FLATTENING
  265. DATA 7.5369793E13,1.0027379093:'GM OF EARTH/SID/SOLAR TIME
  266. siderealdata:
  267. DATA 86 ,.27
  268. DATA 87,0.2753552680
  269. DATA 88,0.2746921630
  270. DATA 89,0.2767669670
  271. DATA 90,0.2767669760
  272. DATA 0,0
  273. stationdata:
  274. 'put your data here lat ,long, height ,call,minimum elevation
  275. DATA 51.26833,0.5633,35,"G8NTH",1
  276.  
  277.  
  278.  
  279.  
  280. daysofyear:
  281. DATA 0,31,59,90,120,151,181,212,243,273,304,334,365
  282.  
  283. Keplerseq:
  284. E=M+E0*SIN(M)+0.5*(E0^2)*SIN(2*M)
  285. 10420 S3=SIN(E):C3=COS(E):R3=1-E0*C3:M1=E-E0*S3
  286. M5=M1-M:IF ABS(M5)<1e-06 THEN 10450 :ELSE E=E-M5/R3:GOTO 10420
  287. 10450 X0=A0*(C3-E0):Y0=A0*E1*S3:R=A0*R3
  288. X1=X0*C(1,1)+Y0*C(1,2):Y1=X0*C(2,1)+Y0*C(2,2):Z1=X0*C(3,1)+Y0*C(3,2)
  289. G7=T*G1+G2:G7=(G7-INT(G7))*P2:S7=-SIN(G7):C7=COS(G7)
  290. X=+(X1*C7)-(Y1*S7):Y=+(X1*S7)+(Y1*C7):Z=Z1:RETURN
  291.  
  292. parameters:
  293. X5=(X-X9):Y5=(Y-Y9):Z5=Z-Z9:R5=SQR(X5^2+Y5^2+Z5^2)
  294. IF T6<>T THEN R8=((R6-R5)/(T6-T))/86400 
  295. IF T6=T THEN R8 = -9e+09
  296. R6=R5:T6=T
  297. Z8=+(X5*C8*C9)+(Y5*S8*C9)+(Z5*C9)
  298. X8=-(X5*C8*S9)-(Y5*S8*S9)+(Z5*C9):Y8=(Y5*C8)-(X5*S8)
  299. S5=Z8/R5:C5=SQR(1-S5*S5):E9=ATN(S5/C5)/P0
  300. A9=ATN(Y8/X8)/P0
  301. W5=(ATN(Y/X))*57.3
  302. IF X<0 THEN W5=180-W5
  303. IF X>0 AND Y<0 THEN W5=-W5
  304. IF  X>0 AND Y>0 THEN W5=360-W5
  305. IF X=0 AND Y>=0 THEN W5=270
  306. IF X=0 AND Y<0 THEN W5=90
  307. IF X8<0 THEN A9=A9+180
  308. IF X8>0 AND Y8<0 THEN A9=360+A9
  309. IF X8=0 AND Y8>=0 THEN A9=90
  310. IF X8=0 AND Y8<0 THEN A9=270
  311. B5=Z/R:L5=ATN(B5/(SQR(1-B5^2)))/P0
  312. RETURN
  313.  
  314.  
  315.  
  316.